﻿/*
 * Creado por SharpDevelop.
 * Usuario: juan
 * Fecha: 12/10/2011
 * Hora: 01:38 p.m.
 * 
 * Para cambiar esta plantilla use Herramientas | Opciones | Codificación | Editar Encabezados Estándar
 */
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Collections.Generic;
using Negocio;
using Excepciones;

namespace Clase2
{
	public partial class PagarInfraccion : Form
		
		{
		
		private List<Infraccion> infracciones; 
		private List<Propietario> propietarios;
        private Sistema sistema;
		
		public PagarInfraccion(Sistema sistema)
		{
			InitializeComponent();
            this.sistema = sistema;
			this.infracciones = sistema.ListaInfracciones;
			this.propietarios = sistema.ListaPropietarios;
			cmb_propietario.DataSource = propietarios;
            this.setearVehiculoAPropietarios();
			this.setearVehiculos();
		}
		
		public List<Infraccion> ListaInfracciones {
			get { return this.infracciones;}
		}
		
		void Button2Click(object sender, EventArgs e)
		{
			this.Close();
		}
				
		void Cmb_propietarioSelectedIndexChanged(object sender, EventArgs e)
		{
			this.setearVehiculos();
		}
		
		private void setearVehiculos() {
            if (cmb_propietario.SelectedItem != null)
            {
                Propietario propietario = (Propietario)cmb_propietario.SelectedItem;
                cmb_vehiculo.DataSource = null;
                cmb_infraccion.DataSource = null;
                cmb_vehiculo.DataSource = propietario.ListaVehiculos;
            }
		}
		
		private void setearInfracciones() {
			if (cmb_vehiculo.SelectedItem != null) {
				Vehiculo vehiculo = (Vehiculo)cmb_vehiculo.SelectedItem;
                cmb_infraccion.DataSource = null;
                cmb_infraccion.DataSource = filtrarPagos(this.setearInfraccionesPorVehiculo(vehiculo));
			}
		}

        private void setearVehiculoAPropietarios()
        {
            foreach (Propietario propietario in this.propietarios)
            {
                foreach (Vehiculo vehiculo in this.sistema.ListaVehiculos)
                {
                    if (vehiculo.Propietario.Id.Equals(propietario.Id))
                    {
                        propietario.agregarVehiculo(vehiculo);
                    }
                }
            }
        }

        private List<InfraccionVehiculo> setearInfraccionesPorVehiculo(Vehiculo vehiculo)
        {
            List<InfraccionVehiculo> ret = new List<InfraccionVehiculo>();
            foreach (InfraccionVehiculo inf in this.sistema.ListaInfraccionVehiculo)
            {
                if (inf.Vehiculo.Id.Equals(vehiculo.Id))
                {
                    ret.Add(inf);
                }
            }

            return ret;
        }

		private List<InfraccionVehiculo> filtrarPagos(List<InfraccionVehiculo> infracciones) {
			List<InfraccionVehiculo> impagas = new List<InfraccionVehiculo>();
			
			foreach(InfraccionVehiculo iv in infracciones) {
				if (!iv.Pago) {
					impagas.Add(iv);
				}
			}
			
			return impagas;
		}
		
		void Cmb_vehiculoSelectedIndexChanged(object sender, EventArgs e)
		{
			this.setearInfracciones();
		}

        private void setearInfraccionesPorVehiculo()
        {
            
        }
	}
}
